home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BCI NET
/
BCI NET Dec 94.iso
/
archives
/
programming
/
source
/
tsm23s.lha
/
TSMorph-prefs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-10-08
|
38KB
|
1,478 lines
// TSMorph - Amiga Morphing program
// Copyright (C) © 1993 Topicsave Limited
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// mpaddock@cix.compulink.co.uk
// $Author: M_J_Paddock $
// $Date: 1993/09/11 21:57:56 $
// $Revision: 1.2 $
// This code was written a bit quick and includes a
// lot of hard coded stuff which should be #defined
// Include headers
#include <proto/exec.h>
#include <proto/gadtools.h>
#include <proto/intuition.h>
#include <proto/diskfont.h>
#include <proto/graphics.h>
#include <proto/utility.h>
#include <proto/asl.h>
#include <proto/icon.h>
#include <proto/dos.h>
#include <libraries/amigaguide.h>
#include <clib/amigaguide_protos.h>
#include <pragmas/amigaguide_pragmas.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <intuition/gadgetclass.h>
// following not in 2.02 headers
#if INCLUDE_VERSION < 37
LONG Stricmp(UBYTE *string1,UBYTE *string2);
#pragma libcall UtilityBase Stricmp A2 9802
#endif
#include "Prefs.h"
struct Library *GadToolsBase;
struct Library *UtilityBase;
struct Library *AslBase;
struct Library *AmigaGuideBase;
struct FileRequester *filereq = NULL;
char TempFilename[257];
AMIGAGUIDECONTEXT handle = NULL;
struct NewAmigaGuide nag = {NULL};
ULONG ASig = 0;
/* Version string for CLI version */
char *Version = "$VER: TSMorph-prefs 2.3 (6.10.93)";
// Help nodes
unsigned char *context[] = {
"", // 0
"Main", // 1
"P-KEEPSETTINGS", // 2
"P-CHANGEPALETTE",// 3
"P-CREATEICONS", // 4
"P-CREATEICONSP", // 5
"P-OPENMODE", // 6
"P-PUBSCREEN", // 7
"P-ZOOM", // 8
"P-CREATEICONSR", // 9
"P-DEPTH", // 10
"P-DX", // 11
"P-DY", // 12
"P-LOADSCRIPT", // 13
"P-MODE", // 14
"P-POSTSCRIPT", // 15
"P-PRESCRIPT", // 16
"P-PUBSCREENR", // 17
"P-QUALITY", // 18
"P-SAVEFORMAT", // 19
"P-ANTIALIAS", // 20
"P-HELP", // 21
"P-PREVIEW", // 22
"P-CUSTOMMODE", // 23
"P-CUSTOMDEPTH", // 24
"TSMP-Close", // 25
"TSMP-Depth", // 26
"TSMP-Zoom", // 27
"TSMorph-prefs", // 28
"TSMP-Save", // 29
"TSMP-Use", // 30
"TSMP-Cancel", // 31
"TSMP-men-Project",// 32
"TSMP-men-P-Open",// 33
"TSMP-men-P-SaveAs",// 34
"TSMP-men-P-Quit",// 35
"TSMP-men-Edit", // 36
"TSMP-men-E-ResetD",//37
"TSMP-men-E-LastS",//38
"TSMP-men-E-Restore",//39
"TSMP-men-Settings",//40
"TSMP-men-S-Icons",//41
"TSMP-men", //42
};
// Settings
STRPTR CustomScreen[100] = {"NONE",NULL}; // table of modes - headed by none
ULONG CustomMode = 0;
ULONG CustomDepth = 4;
ULONG DX = 0;
ULONG DY = 0;
ULONG RenderMode = 0;
ULONG SaveFormat = 0;
ULONG Quality = 75;
BOOL AntiAlias = FALSE;
ULONG Depth = 2;
ULONG Zoom = 1;
ULONG Palette = 0;
ULONG OpenMode = 2;
BOOL KeepPrefs = TRUE;
BOOL Help = FALSE;
BOOL ProjectI = TRUE;
BOOL PrefsI = TRUE;
BOOL RenderI = FALSE;
// Icons from this program
BOOL Icons = TRUE;
// Prototypes
void UpdateGadgets(void);
void DisableWindow(void);
void EnableWindow(void);
void Error(char *ErrorMessage,char *extra);
void SaveSettings(char *filename);
void LoadSettings(char *filename);
BOOL GetAFile(char *name,char *Prompt,ULONG flags);
void InitParams(UBYTE *string);
void help(ULONG helpnum);
// Is point in a rectangle
#define PointInBox(x,y,mx,my,MX,MY) ((x>=mx)&&(y>=my)&&(x<=MX)&&(y<=MY))
struct List NodeList; // Custom mode table
struct Node FirstNode = {0};
void
main(void) {
int running = 1;
struct NameInfo buff;
ULONG id = INVALID_ID;
int kount = 1;
struct Node *MyNode;
struct AmigaGuideMsg *agm;
ULONG Signals;
// Initialise Custom list and add "NONE"
NewList(&NodeList);
FirstNode.ln_Name = CustomScreen[0];
AddTail(&NodeList,&FirstNode);
// try and open amigaguide
if (AmigaGuideBase = OpenLibrary ("amigaguide.library", 34L)) {
nag.nag_BaseName = "TSMorph";
nag.nag_Name = "TSMorph.guide";
nag.nag_ClientPort = "TSMorph-prefs_HELP";
nag.nag_Context = context;
nag.nag_Flags = HTF_NOACTIVATE;
nag.nag_PubScreen = NULL;
if (handle = OpenAmigaGuideAsync(&nag, NULL)) {
ASig = AmigaGuideSignal(handle);
}
}
// Open various libraries
if (IntuitionBase = OpenLibrary("intuition.library",37)) {
if (GadToolsBase = OpenLibrary("gadtools.library",37)) {
if (DiskfontBase = OpenLibrary("diskfont.library",36)) {
if (GfxBase = OpenLibrary("graphics.library",37)) {
// build up list of display modes (max ~100)
id = NextDisplayInfo(id);
while ((id != INVALID_ID) && (kount < 98)) {
if (GetDisplayInfoData(NULL,(UBYTE *)&buff,sizeof(struct NameInfo),DTAG_NAME,id)) {
if ((MyNode = (struct Node *)calloc(1,sizeof(struct Node))) &&
(CustomScreen[kount] = (STRPTR)strdup(buff.Name))) {
MyNode->ln_Name = CustomScreen[kount];
AddTail(&NodeList,MyNode);
kount++;
}
}
id = NextDisplayInfo(id);
}
CustomScreen[kount] = NULL;
// open other libraries
if (UtilityBase = OpenLibrary("utility.library",37)) {
if (AslBase = OpenLibrary("asl.library",37)) {
if (IconBase = OpenLibrary("icon.library",37)) {
// get File requester and open window
if (filereq = (struct FileRequest *)AllocFileRequest()) {
if (!SetupScreen()) {
if (!OpenTSMorphPrefsWindow()) {
// Set up custom modes
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_CustomMode],TSMorphPrefsWnd,NULL,
GTLV_Labels,&NodeList,
TAG_END);
// Load settings from ENV:
LoadSettings("ENV:TSMorph/TSMorph.prefs");
// Loop until quit
while (running) {
Signals = Wait((ASig) |
(1L << TSMorphPrefsWnd->UserPort->mp_SigBit));
// amigaguide stuff
if (Signals & ASig) {
if (handle) {
while (agm = GetAmigaGuideMsg(handle)) {
switch (agm->agm_Type) {
case ToolCmdReplyID:
break;
case ToolStatusID:
break;
default:
break;
}
ReplyAmigaGuideMsg(agm);
}
}
}
// Normal stuff
if (Signals & (1L << TSMorphPrefsWnd->UserPort->mp_SigBit)) {
running = HandleTSMorphPrefsIDCMP();
}
// Close everything down
}
}
CloseTSMorphPrefsWindow();
}
CloseDownScreen();
FreeFileRequest(filereq);
}
CloseLibrary(IconBase);
}
CloseLibrary(AslBase);
}
CloseLibrary(UtilityBase);
}
CloseLibrary(GfxBase);
}
CloseLibrary(DiskfontBase);
}
CloseLibrary(GadToolsBase);
}
CloseLibrary(IntuitionBase);
}
if (AmigaGuideBase) {
if (handle) {
CloseAmigaGuide(handle);
}
CloseLibrary(AmigaGuideBase);
}
}
/* Display help using amigaguide (if available)
* based on a number
*/
void
help(ULONG helpnum) {
if (handle) {
SetAmigaGuideContext(handle,helpnum,NULL);
SendAmigaGuideContext(handle,NULL);
}
}
int
CustomDepthClicked( void ) {
/* routine when gadget "Depth" is clicked. */
CustomDepth = TSMorphPrefsMsg.Code;
return 1;
}
int
DXClicked( void ) {
/* routine when gadget "DX" is clicked. */
DX = TSMorphPrefsMsg.Code;
return 1;
}
int DYClicked( void ) {
/* routine when gadget "DY" is clicked. */
DY = TSMorphPrefsMsg.Code;
return 1;
}
int
ModeClicked( void ) {
/* routine when gadget "(OPEN MODE)" is clicked. */
OpenMode = TSMorphPrefsMsg.Code;
return 1;
}
int
SaveFormatClicked( void ) {
/* routine when gadget "SAVEFORMAT" is clicked. */
SaveFormat = TSMorphPrefsMsg.Code;
// only enable Quality on JPEG and JPEGT
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Quality],TSMorphPrefsWnd,NULL,
GA_Disabled, ((SaveFormat == 5)|(SaveFormat == 6))?FALSE:TRUE,
TAG_END);
return 1;
}
int
QualityClicked( void ) {
/* routine when gadget "QUALITY" is clicked. */
Quality = TSMorphPrefsMsg.Code;
return 1;
}
int
AntiAliasClicked( void ) {
/* routine when gadget "AntiA" is clicked. */
AntiAlias = !AntiAlias;
return 1;
}
int
DepthClicked( void ) {
/* routine when gadget "Depth" is clicked. */
Depth = TSMorphPrefsMsg.Code;
return 1;
}
int
ZoomClicked( void ) {
/* routine when gadget "Zoom" is clicked. */
Zoom = TSMorphPrefsMsg.Code;
return 1;
}
int
PaletteClicked( void ) {
/* routine when gadget "Palette" is clicked. */
Palette = TSMorphPrefsMsg.Code;
return 1;
}
int
OpenModeClicked( void ) {
/* routine when gadget "Mode" is clicked. */
OpenMode = TSMorphPrefsMsg.Code;
return 1;
}
int
HelpClicked( void ) {
/* routine when gadget "Help" is clicked. */
Help = !Help;
return 1;
}
int
KeepPrefsClicked( void ) {
/* routine when gadget "Prefs" is clicked. */
KeepPrefs = !KeepPrefs;
return 1;
}
int
ProjectClicked( void ) {
/* routine when gadget "Project" is clicked. */
ProjectI = !ProjectI;
return 1;
}
int
PrefsClicked( void ) {
/* routine when gadget "Prefs" is clicked. */
PrefsI = !PrefsI;
return 1;
}
int
RenderClicked( void ) {
/* routine when gadget "Render" is clicked. */
RenderI = !RenderI;
return 1;
}
int
SaveClicked( void ) {
/* routine when gadget "Save" is clicked. */
SaveSettings("ENVARC:TSMorph/TSMorph.prefs");
SaveSettings("ENV:TSMorph/TSMorph.prefs");
return 0;
}
int
UseClicked( void ) {
/* routine when gadget "Use" is clicked. */
SaveSettings("ENV:TSMorph/TSMorph.prefs");
return 0;
}
int
CancelClicked( void ) {
/* routine when gadget "Cancel" is clicked. */
// nothing
return 0;
}
int
CustomModeClicked( void ) {
/* routine when gadget "Custom Screen" is clicked. */
CustomMode = TSMorphPrefsMsg.Code;
return 1;
}
int
PreviewClicked( void ) {
/* routine when gadget "Preview" is clicked. */
// display help if required
if (TSMorphPrefsMsg.Code == 0x5F) {
help(22);
}
return 1;
}
int
LoadClicked( void ) {
/* routine when gadget "Load" is clicked. */
// display help if required
if (TSMorphPrefsMsg.Code == 0x5F) {
help(13);
}
return 1;
}
int
PreClicked( void ) {
/* routine when gadget "Pre" is clicked. */
// display help if required
if (TSMorphPrefsMsg.Code == 0x5F) {
help(16);
}
return 1;
}
int
PostClicked( void ) {
/* routine when gadget "Post" is clicked. */
// display help if required
if (TSMorphPrefsMsg.Code == 0x5F) {
help(15);
}
return 1;
}
int
MorphScreenClicked( void ) {
/* routine when gadget "TSMorph" is clicked. */
// display help if required
if (TSMorphPrefsMsg.Code == 0x5F) {
help(7);
}
return 1;
}
int
RenderScreenClicked( void ) {
/* routine when gadget "Render" is clicked. */
// display help if required
if (TSMorphPrefsMsg.Code == 0x5F) {
help(17);
}
return 1;
}
int
TSMorphPrefsOpen( void ) {
/* routine when (sub)item "Open..." is selected. */
LoadSettings(NULL);
return 1;
}
int
TSMorphPrefsSaveAs( void ) {
/* routine when (sub)item "Save As..." is selected. */
SaveSettings(NULL);
return 1;
}
int
TSMorphPrefsQuit( void ) {
/* routine when (sub)item "Quit" is selected. */
// nothing
return 0;
}
int
TSMorphPrefsResetToDefaults( void ) {
/* routine when (sub)item "Reset To Defaults" is selected. */
Zoom = 1;
Palette = 0;
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_MorphScreen],TSMorphPrefsWnd,NULL,
GTST_String,"",
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_RenderScreen],TSMorphPrefsWnd,NULL,
GTST_String,"",
TAG_END);
ProjectI = TRUE;
RenderI = FALSE;
PrefsI = TRUE;
KeepPrefs = TRUE;
OpenMode = 2;
SaveFormat = 0;
Quality = 75;
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Pre],TSMorphPrefsWnd,NULL,
GTST_String,"Rexx/Prescript",
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Post],TSMorphPrefsWnd,NULL,
GTST_String,"Rexx/Postscript",
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Load],TSMorphPrefsWnd,NULL,
GTST_String,"Rexx/Loadscript",
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Preview],TSMorphPrefsWnd,NULL,
GTST_String,"Rexx/Preview",
TAG_END);
DX = 0;
DY = 0;
Depth = 2;
RenderMode = 0;
CustomMode = 0;
CustomDepth = 4;
UpdateGadgets();
return 1;
}
// Update gadgets based on current settings
void
UpdateGadgets(void) {
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_CustomDepth],TSMorphPrefsWnd,NULL,
GTSL_Level,CustomDepth,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_DX],TSMorphPrefsWnd,NULL,
GTSL_Level,DX,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_DY],TSMorphPrefsWnd,NULL,
GTSL_Level,DY,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Mode],TSMorphPrefsWnd,NULL,
GTCY_Active,RenderMode,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_SaveFormat],TSMorphPrefsWnd,NULL,
GTCY_Active,SaveFormat,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Quality],TSMorphPrefsWnd,NULL,
GTSL_Level,Quality,
GA_Disabled, ((SaveFormat == 5)|(SaveFormat == 6))?FALSE:TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_AntiAlias],TSMorphPrefsWnd,NULL,
GTCB_Checked,AntiAlias,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Depth],TSMorphPrefsWnd,NULL,
GTSL_Level,Depth,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Zoom],TSMorphPrefsWnd,NULL,
GTCY_Active,Zoom,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Palette],TSMorphPrefsWnd,NULL,
GTCY_Active,Palette,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_OpenMode],TSMorphPrefsWnd,NULL,
GTCY_Active,OpenMode,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Help],TSMorphPrefsWnd,NULL,
GTCB_Checked,Help,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_KeepPrefs],TSMorphPrefsWnd,NULL,
GTCB_Checked,KeepPrefs,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Project],TSMorphPrefsWnd,NULL,
GTCB_Checked,ProjectI,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Prefs],TSMorphPrefsWnd,NULL,
GTCB_Checked,PrefsI,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Render],TSMorphPrefsWnd,NULL,
GTCB_Checked,RenderI,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_CustomMode],TSMorphPrefsWnd,NULL,
GTLV_Top,CustomMode,
GTLV_Selected,CustomMode,
TAG_END);
}
int
TSMorphPrefsLastSaved( void ) {
/* routine when (sub)item "Last Saved" is selected. */
LoadSettings("ENVARC:TSMorph/TSMorph.prefs");
return 1;
}
int
TSMorphPrefsRestore( void ) {
/* routine when (sub)item "Restore" is selected. */
LoadSettings("ENV:TSMorph/TSMorph.prefs");
return 1;
}
int
TSMorphPrefsCreateIcons( void ) {
/* routine when (sub)item "Create Icons?" is selected. */
Icons = !Icons;
return 1;
}
int
TSMorphPrefsCloseWindow( void ) {
/* routine for "IDCMP_CLOSEWINDOW". */
// nothing
return 0;
}
int
TSMorphPrefsRawKey(void) {
// Display help if 'Help' pressed
UWORD X,Y;
ULONG HNum;
switch (TSMorphPrefsMsg.Code) {
case 0x5F:
X = TSMorphPrefsWnd->MouseX;
Y = TSMorphPrefsWnd->MouseY;
if (PointInBox(X,Y,0,0,
20,TSMorphPrefsWnd->BorderTop))
HNum = 25;
else
if (PointInBox(X,Y,(TSMorphPrefsWnd->Width - 24),0,
TSMorphPrefsWnd->Width,TSMorphPrefsWnd->BorderTop))
HNum = 26;
else
if (PointInBox(X,Y,(TSMorphPrefsWnd->Width - 24 - 24),0,
(TSMorphPrefsWnd->Width - 24),TSMorphPrefsWnd->BorderTop))
HNum = 27;
else
if (PointInBox(X,Y,Rect[GDX_CustomDepth].MinX,Rect[GDX_CustomDepth].MinY,
Rect[GDX_CustomDepth].MaxX,Rect[GDX_CustomDepth].MaxY))
HNum = 24;
else
if (PointInBox(X,Y,Rect[GDX_DX].MinX,Rect[GDX_DX].MinY,
Rect[GDX_DX].MaxX,Rect[GDX_DX].MaxY))
HNum = 11;
else
if (PointInBox(X,Y,Rect[GDX_DY].MinX,Rect[GDX_DY].MinY,
Rect[GDX_DY].MaxX,Rect[GDX_DY].MaxY))
HNum = 12;
else
if (PointInBox(X,Y,Rect[GDX_Mode].MinX,Rect[GDX_Mode].MinY,
Rect[GDX_Mode].MaxX,Rect[GDX_Mode].MaxY))
HNum = 14;
else
if (PointInBox(X,Y,Rect[GDX_SaveFormat].MinX,Rect[GDX_SaveFormat].MinY,
Rect[GDX_SaveFormat].MaxX,Rect[GDX_SaveFormat].MaxY))
HNum = 19;
else
if (PointInBox(X,Y,Rect[GDX_Quality].MinX,Rect[GDX_Quality].MinY,
Rect[GDX_Quality].MaxX,Rect[GDX_Quality].MaxY))
HNum = 18;
else
if (PointInBox(X,Y,Rect[GDX_AntiAlias].MinX,Rect[GDX_AntiAlias].MinY,
Rect[GDX_AntiAlias].MaxX,Rect[GDX_AntiAlias].MaxY))
HNum = 20;
else
if (PointInBox(X,Y,Rect[GDX_Depth].MinX,Rect[GDX_Depth].MinY,
Rect[GDX_Depth].MaxX,Rect[GDX_Depth].MaxY))
HNum = 10;
else
if (PointInBox(X,Y,Rect[GDX_Zoom].MinX,Rect[GDX_Zoom].MinY,
Rect[GDX_Zoom].MaxX,Rect[GDX_Zoom].MaxY))
HNum = 8;
else
if (PointInBox(X,Y,Rect[GDX_Palette].MinX,Rect[GDX_Palette].MinY,
Rect[GDX_Palette].MaxX,Rect[GDX_Palette].MaxY))
HNum = 3;
else
if (PointInBox(X,Y,Rect[GDX_OpenMode].MinX,Rect[GDX_OpenMode].MinY,
Rect[GDX_OpenMode].MaxX,Rect[GDX_OpenMode].MaxY))
HNum = 6;
else
if (PointInBox(X,Y,Rect[GDX_Help].MinX,Rect[GDX_Help].MinY,
Rect[GDX_Help].MaxX,Rect[GDX_Help].MaxY))
HNum = 21;
else
if (PointInBox(X,Y,Rect[GDX_KeepPrefs].MinX,Rect[GDX_KeepPrefs].MinY,
Rect[GDX_KeepPrefs].MaxX,Rect[GDX_KeepPrefs].MaxY))
HNum = 2;
else
if (PointInBox(X,Y,Rect[GDX_Project].MinX,Rect[GDX_Project].MinY,
Rect[GDX_Project].MaxX,Rect[GDX_Project].MaxY))
HNum = 4;
else
if (PointInBox(X,Y,Rect[GDX_Prefs].MinX,Rect[GDX_Prefs].MinY,
Rect[GDX_Prefs].MaxX,Rect[GDX_Prefs].MaxY))
HNum = 5;
else
if (PointInBox(X,Y,Rect[GDX_Render].MinX,Rect[GDX_Render].MinY,
Rect[GDX_Render].MaxX,Rect[GDX_Render].MaxY))
HNum = 9;
else
if (PointInBox(X,Y,Rect[GDX_Save].MinX,Rect[GDX_Save].MinY,
Rect[GDX_Save].MaxX,Rect[GDX_Save].MaxY))
HNum = 29;
else
if (PointInBox(X,Y,Rect[GDX_Use].MinX,Rect[GDX_Use].MinY,
Rect[GDX_Use].MaxX,Rect[GDX_Use].MaxY))
HNum = 30;
else
if (PointInBox(X,Y,Rect[GDX_Cancel].MinX,Rect[GDX_Cancel].MinY,
Rect[GDX_Cancel].MaxX,Rect[GDX_Cancel].MaxY))
HNum = 31;
else
if (PointInBox(X,Y,Rect[GDX_CustomMode].MinX,Rect[GDX_CustomMode].MinY,
Rect[GDX_CustomMode].MaxX,Rect[GDX_CustomMode].MaxY))
HNum = 23;
else
if (PointInBox(X,Y,Rect[GDX_Preview].MinX,Rect[GDX_Preview].MinY,
Rect[GDX_Preview].MaxX,Rect[GDX_Preview].MaxY))
HNum = 22;
else
if (PointInBox(X,Y,Rect[GDX_Load].MinX,Rect[GDX_Load].MinY,
Rect[GDX_Load].MaxX,Rect[GDX_Load].MaxY))
HNum = 13;
else
if (PointInBox(X,Y,Rect[GDX_Pre].MinX,Rect[GDX_Pre].MinY,
Rect[GDX_Pre].MaxX,Rect[GDX_Pre].MaxY))
HNum = 16;
else
if (PointInBox(X,Y,Rect[GDX_Post].MinX,Rect[GDX_Post].MinY,
Rect[GDX_Post].MaxX,Rect[GDX_Post].MaxY))
HNum = 15;
else
if (PointInBox(X,Y,Rect[GDX_MorphScreen].MinX,Rect[GDX_MorphScreen].MinY,
Rect[GDX_MorphScreen].MaxX,Rect[GDX_MorphScreen].MaxY))
HNum = 7;
else
if (PointInBox(X,Y,Rect[GDX_RenderScreen].MinX,Rect[GDX_RenderScreen].MinY,
Rect[GDX_RenderScreen].MaxX,Rect[GDX_RenderScreen].MaxY))
HNum = 17;
else
HNum = 28;
help(HNum);
break;
}
return 1;
}
int
TSMorphPrefsMenuHelp(void) {
// Help on a menu
ULONG HNum;
// start by reseting any changed menu items
ClearMenuStrip(TSMorphPrefsWnd);
if (Icons) {
(ItemAddress(TSMorphPrefsMenus,FULLMENUNUM(2,0,NOSUB)))->Flags |= CHECKED;
}
else {
(ItemAddress(TSMorphPrefsMenus,FULLMENUNUM(2,0,NOSUB)))->Flags &= ~CHECKED;
}
ResetMenuStrip(TSMorphPrefsWnd,TSMorphPrefsMenus);
// determine and display help node
switch (TSMorphPrefsMsg.Code) {
case FULLMENUNUM(0,NOITEM,NOSUB):
case FULLMENUNUM(0,2,NOSUB):
HNum = 32;
break;
case FULLMENUNUM(0,0,NOSUB):
HNum = 33;
break;
case FULLMENUNUM(0,1,NOSUB):
HNum = 34;
break;
case FULLMENUNUM(0,3,NOSUB):
HNum = 35;
break;
case FULLMENUNUM(1,NOITEM,NOSUB):
HNum = 36;
break;
case FULLMENUNUM(1,0,NOSUB):
HNum = 37;
break;
case FULLMENUNUM(1,1,NOSUB):
HNum = 38;
break;
case FULLMENUNUM(1,2,NOSUB):
HNum = 39;
break;
case FULLMENUNUM(2,NOITEM,NOSUB):
HNum = 40;
break;
case FULLMENUNUM(2,0,NOSUB):
HNum = 41;
break;
default:
HNum = 42;
break;
}
help(HNum);
return 1;
}
extern USHORT __chip BusyPointerData[] =
{
0x0000,0x0000,
0x0400,0x07C0,0x0000,0x07C0,0x0100,0x0380,0x0000,0x07E0,
0x07C0,0x1FF8,0x1FF0,0x3FEC,0x3FF8,0x7FDE,0x3FF8,0x7FBE,
0x7FFC,0xFF7F,0x7EFC,0xFFFF,0x7FFC,0xFFFF,0x3FF8,0x7FFE,
0x3FF8,0x7FFE,0x1FF0,0x3FFC,0x07C0,0x1FF8,0x0000,0x07E0,
0x0000,0x0000,
};
struct Requester waitRequest;
void DisableWindow(void) {
InitRequester(&waitRequest);
Request(&waitRequest,TSMorphPrefsWnd);
SetPointer(TSMorphPrefsWnd, BusyPointerData, 16, 16, -6, 0);
/* Does not actually disable the gadgets any more
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_CustomDepth],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_DX],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_DY],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Mode],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_SaveFormat],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Quality],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_AntiAlias],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Depth],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Zoom],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Palette],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_OpenMode],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Help],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_KeepPrefs],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Project],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Prefs],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Render],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Save],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Use],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Cancel],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Preview],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Load],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Pre],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Load],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Post],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_MorphScreen],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_RenderScreen],TSMorphPrefsWnd,NULL,
GA_Disabled,TRUE,
TAG_END);
*/
}
void EnableWindow(void) {
EndRequest(&waitRequest,TSMorphPrefsWnd);
ClearPointer(TSMorphPrefsWnd);
/* gadgets are not disabled anymore
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_CustomDepth],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_DX],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_DY],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Mode],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_SaveFormat],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Quality],TSMorphPrefsWnd,NULL,
GA_Disabled, ((SaveFormat == 5)|(SaveFormat == 6))?FALSE:TRUE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_AntiAlias],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Depth],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Zoom],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Palette],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_OpenMode],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Help],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_KeepPrefs],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Project],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Prefs],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Render],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Save],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Use],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Cancel],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Preview],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Load],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Pre],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Load],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Post],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_MorphScreen],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_RenderScreen],TSMorphPrefsWnd,NULL,
GA_Disabled,FALSE,
TAG_END);
*/
}
// Save settings to a file
void
SaveSettings(char *filename) {
char *ifilename = NULL;
BPTR fh;
BOOL ok=TRUE;
char buffer[65];
struct DiskObject *MyDiskObject; // The Icon
char *tstr;
DisableWindow();
if (!filename) {
if (GetAFile("TSMorph.prefs","Save TSMorph Preferences",FILF_SAVE)) {
ifilename = TempFilename;
}
}
else {
ifilename = filename;
}
if (ifilename) {
if (fh = Open(ifilename,MODE_NEWFILE)) {
FPuts(fh,";TSMorph parameters\n");
FPuts(fh,"CREATEICONS=");
FPuts(fh,ProjectI?"YES\n":"NO\n");
FPuts(fh,"CHANGEPALETTE=");
FPuts(fh,(Palette==2)?"OFF\n":(Palette?"NO\n":"YES\n"));
FPuts(fh,"ZOOM=");
FPuts(fh,(Zoom==2)?"OFF\n":(Zoom?"NO\n":"YES\n"));
FPuts(fh,"OPENMODE=");
switch (OpenMode) {
case 0:
FPuts(fh,"IFILBM\n");
break;
case 1:
FPuts(fh,"ALWAYS\n");
break;
case 3:
FPuts(fh,"REMAP\n");
break;
case 4:
FPuts(fh,"OPAL\n");
break;
case 2:
default:
FPuts(fh,"IFCOLOURS\n");
break;
}
if (*(tstr = GetString(TSMorphPrefsGadgets[GDX_MorphScreen]))) {
FPuts(fh,"PUBSCREEN=");
FPuts(fh,tstr);
FPuts(fh,"\n");
}
else {
FPuts(fh,";PUBSCREEN=\n");
}
if (CustomMode) {
FPuts(fh,"CUSTOMMODE=");
FPuts(fh,CustomScreen[CustomMode]);
FPuts(fh,"\n");
}
else {
FPuts(fh,";CUSTOMMODE=\n");
}
sprintf(buffer,"CUSTOMDEPTH=%ld\n",CustomDepth);
FPuts(fh,buffer);
FPuts(fh,"PREVIEW=");
FPuts(fh,GetString(TSMorphPrefsGadgets[GDX_Preview]));
FPuts(fh,"\n");
FPuts(fh,"HELP=");
FPuts(fh,Help?"YES\n":"NO\n");
FPuts(fh,";Prefs parameters\n");
FPuts(fh,"CREATEICONSP=");
FPuts(fh,PrefsI?"YES\n":"NO\n");
FPuts(fh,"KEEPSETTINGS=");
FPuts(fh,KeepPrefs?"YES\n":"NO\n");
FPuts(fh,";TSMorph-render parameters\n");
FPuts(fh,"CREATEICONSR=");
FPuts(fh,RenderI?"YES\n":"NO\n");
sprintf(buffer,"DX=%ld\n",DX);
FPuts(fh,buffer);
sprintf(buffer,"DY=%ld\n",DY);
FPuts(fh,buffer);
FPuts(fh,"LOADSCRIPT=");
FPuts(fh,GetString(TSMorphPrefsGadgets[GDX_Load]));
FPuts(fh,"\n");
FPuts(fh,"PRESCRIPT=");
FPuts(fh,GetString(TSMorphPrefsGadgets[GDX_Pre]));
FPuts(fh,"\n");
FPuts(fh,"POSTSCRIPT=");
FPuts(fh,GetString(TSMorphPrefsGadgets[GDX_Post]));
FPuts(fh,"\n");
sprintf(buffer,"DEPTH=%ld\n",Depth);
FPuts(fh,buffer);
sprintf(buffer,"MODE=%ld\n",RenderMode);
FPuts(fh,buffer);
FPuts(fh,"SAVEFORMAT=");
switch (SaveFormat) {
case 1:
FPuts(fh,"OPAL24\n");
break;
case 2:
FPuts(fh,"OPAL24T\n");
break;
case 3:
FPuts(fh,"OPAL24F\n");
break;
case 4:
FPuts(fh,"OPAL24FT\n");
break;
case 5:
FPuts(fh,"JPEG\n");
break;
case 6:
FPuts(fh,"JPEGT\n");
break;
case 7:
FPuts(fh,"PPM\n");
break;
case 8:
FPuts(fh,"BW16\n");
break;
case 9:
FPuts(fh,"BW256\n");
break;
case 10:
FPuts(fh,"HAM6\n");
break;
case 11:
FPuts(fh,"HAM8\n");
break;
case 12:
FPuts(fh,"DCTV3\n");
break;
case 13:
FPuts(fh,"DCTV4\n");
break;
case 0:
default:
FPuts(fh,"ILBM24\n");
break;
}
sprintf(buffer,"QUALITY=%ld\n",Quality);
FPuts(fh,buffer);
if (*(tstr = GetString(TSMorphPrefsGadgets[GDX_RenderScreen]))) {
FPuts(fh,"PUBSCREENR=");
FPuts(fh,tstr);
FPuts(fh,"\n");
}
else {
FPuts(fh,";PUBSCREENR=\n");
}
FPuts(fh,"ANTIALIAS=");
FPuts(fh,AntiAlias?"YES\n":"NO\n");
if (Icons) {
if (MyDiskObject = GetDiskObject(ifilename)) {
FreeDiskObject(MyDiskObject);
}
else {
if ((MyDiskObject = GetDiskObject("ENV:TSMorph/def_prefs")) ||
(MyDiskObject = GetDiskObject("ENV:SYS/def_prefs")) ||
(MyDiskObject = GetDefDiskObject(WBPROJECT))) {
PutDiskObject(ifilename,MyDiskObject);
FreeDiskObject(MyDiskObject);
}
}
}
if (!Close(fh)) {
ok = FALSE;
}
}
else {
ok = FALSE;
}
}
if (!ok) {
Error("Error Saving Preferences\n'%s'",ifilename);
}
// Why does this call UpdateGadgets()???
UpdateGadgets();
EnableWindow();
}
// Load settings from a file
void
LoadSettings(char *filename) {
BPTR fh;
BOOL ok=TRUE;
char string[65];
char *ifilename = NULL;
DisableWindow();
if (!filename) {
if (GetAFile("TSMorph.prefs","Load TSMorph Preferences",0)) {
ifilename = TempFilename;
}
}
else {
ifilename = filename;
}
if (ifilename) {
TSMorphPrefsResetToDefaults();
if (fh = Open(ifilename,MODE_OLDFILE)) {
// If we have found a file the relevant lines
while (FGets(fh,string,64)) {
// remove newline
string[strlen(string)-1] = '\0';
// ignore blank and comment lines
if (string[0] && (string[0]!=';')) {
// Clone settings in memory
InitParams(string);
}
}
Close(fh);
}
else {
ok=FALSE;
}
}
if (!ok) {
Error("Error Loading Preferences\n'%s'",ifilename);
}
UpdateGadgets();
EnableWindow();
}
/* Display an error message
* ErrorMessage : The main text
* extra : extra text
*/
void
Error(char *ErrorMessage,char *extra) {
struct EasyStruct EasyStruct = {
sizeof(struct EasyStruct),
0,
NULL,
NULL,
NULL
};
UBYTE *title = "TSMorph-prefs Error";
EasyStruct.es_TextFormat = ErrorMessage;
EasyStruct.es_Title = title;
EasyStruct.es_GadgetFormat = "OK";
EasyRequest(TSMorphPrefsWnd,&EasyStruct,NULL,extra);
}
/* Shows ASL file requester for a file
* name : current file name
* Prompt: Title
* flags : e.g. for save flag
* Returns: TRUE if file selected, name is TempFileName
*/
BOOL
GetAFile(char *name,char *Prompt,ULONG flags) {
// Split of directory name
strncpy(TempFilename,name,PathPart(name) - name);
TempFilename[PathPart(name) - name] = 0;
// Show requesters
if (AslRequestTags((APTR) filereq,
ASL_Hail,(Tag) Prompt,
ASL_FuncFlags,flags,
ASL_Dir, (Tag) TempFilename,
ASL_File,(Tag) FilePart(name),
ASL_Window, TSMorphPrefsWnd,
TAG_DONE)) {
// rejoin name
strncpy(TempFilename,filereq->rf_Dir,256);
AddPart(TempFilename,filereq->rf_File,256);
return TRUE;
}
else {
return FALSE;
}
}
// Initialize settings values from parameters
void
InitParams(UBYTE *string) {
UBYTE *s[2] = {NULL,NULL};
char *s1;
int kount;
s[0] = string;
if (s1 = FindToolType(s,"CREATEICONS")) {
ProjectI = MatchToolValue(s1,"YES");
}
if (s1 = FindToolType(s,"CHANGEPALETTE")) {
if (MatchToolValue(s1,"YES")) {
Palette = 0;
}
else {
if (MatchToolValue(s1,"OFF")) {
Palette = 2;
}
else {
Palette = 1;
}
}
}
if (s1 = FindToolType(s,"ZOOM")) {
if (MatchToolValue(s1,"YES")) {
Zoom = 0;
}
else {
if (MatchToolValue(s1,"OFF")) {
Zoom = 2;
}
else {
Zoom = 1;
}
}
}
if (s1 = FindToolType(s,"OPENMODE")) {
if (MatchToolValue(s1,"IFILBM")) {
OpenMode = 0;
}
else {
if (MatchToolValue(s1,"ALWAYS")) {
SaveFormat = 1;
}
else {
if (MatchToolValue(s1,"REMAP")) {
SaveFormat = 3;
}
else {
if (MatchToolValue(s1,"OPAL")) {
SaveFormat = 4;
}
else {
SaveFormat = 2;
}
}
}
}
}
if (s1 = FindToolType(s,"PUBSCREEN")) {
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_MorphScreen],TSMorphPrefsWnd,NULL,
GTST_String,s1,
TAG_END);
}
if (s1 = FindToolType(s,"CUSTOMMODE")) {
CustomMode = 0;
for (kount = 0;
CustomScreen[kount];
kount++) {
if (!Stricmp(CustomScreen[kount],s1)) {
CustomMode = kount;
}
}
}
if (s1 = FindToolType(s,"CUSTOMDEPTH")) {
StrToLong(s1,&CustomDepth);
}
if (s1 = FindToolType(s,"PREVIEW")) {
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Preview],TSMorphPrefsWnd,NULL,
GTST_String,s1,
TAG_END);
}
if (s1 = FindToolType(s,"HELP")) {
Help = MatchToolValue(s1,"YES");
}
if (s1 = FindToolType(s,"CREATEICONSP")) {
PrefsI = MatchToolValue(s1,"YES");
}
if (s1 = FindToolType(s,"KEEPSETTINGS")) {
KeepPrefs = MatchToolValue(s1,"YES");
}
if (s1 = FindToolType(s,"CREATEICONSR")) {
RenderI = MatchToolValue(s1,"YES");
}
if (s1 = FindToolType(s,"DX")) {
StrToLong(s1,&DX);
}
if (s1 = FindToolType(s,"DY")) {
StrToLong(s1,&DY);
}
if (s1 = FindToolType(s,"LOADSCRIPT")) {
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Load],TSMorphPrefsWnd,NULL,
GTST_String,s1,
TAG_END);
}
if (s1 = FindToolType(s,"PRESCRIPT")) {
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Pre],TSMorphPrefsWnd,NULL,
GTST_String,s1,
TAG_END);
}
if (s1 = FindToolType(s,"POSTSCRIPT")) {
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_Post],TSMorphPrefsWnd,NULL,
GTST_String,s1,
TAG_END);
}
if (s1 = FindToolType(s,"DEPTH")) {
StrToLong(s1,&Depth);
}
if (s1 = FindToolType(s,"MODE")) {
StrToLong(s1,&RenderMode);
}
if (s1 = FindToolType(s,"SAVEFORMAT")) {
if (MatchToolValue(s1,"OPAL24")) {
SaveFormat = 1;
}
else {
if (MatchToolValue(s1,"OPAL24T")) {
SaveFormat = 2;
}
else {
if (MatchToolValue(s1,"OPAL24F")) {
SaveFormat = 3;
}
else {
if (MatchToolValue(s1,"OPAL24FT")) {
SaveFormat = 4;
}
else {
if (MatchToolValue(s1,"JPEG")) {
SaveFormat = 5;
}
else {
if (MatchToolValue(s1,"JPEGT")) {
SaveFormat = 6;
}
else {
if (MatchToolValue(s1,"PPM")) {
SaveFormat = 7;
}
else {
if (MatchToolValue(s1,"BW16")) {
SaveFormat = 8;
}
else {
if (MatchToolValue(s1,"BW256")) {
SaveFormat = 9;
}
else {
if (MatchToolValue(s1,"HAM6")) {
SaveFormat = 10;
}
else {
if (MatchToolValue(s1,"HAM8")) {
SaveFormat = 11;
}
else {
if (MatchToolValue(s1,"DCTV3")) {
SaveFormat = 12;
}
else {
if (MatchToolValue(s1,"DCTV4")) {
SaveFormat = 13;
}
else {
SaveFormat = 0;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (s1 = FindToolType(s,"QUALITY")) {
StrToLong(s1,&Quality);
}
if (s1 = FindToolType(s,"PUBSCREENR")) {
GT_SetGadgetAttrs(TSMorphPrefsGadgets[GDX_RenderScreen],TSMorphPrefsWnd,NULL,
GTST_String,s1,
TAG_END);
}
if (s1 = FindToolType(s,"ANTIALIAS")) {
AntiAlias = MatchToolValue(s1,"YES");
}
}